home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / conhlp03 / padp_src / padpage.c < prev    next >
C/C++ Source or Header  |  1995-02-20  |  2KB  |  122 lines

  1. /*
  2.     padpage.c
  3.     tab=8
  4. */
  5.  
  6. #define PROGRAM   "パッド対応ページャー"
  7. #define VERSION   "V0.06"
  8. #define FIRSTDATE "94/11/15"
  9. #define FINALDATE "95/02/20"
  10. #define USAGE     "   for FM-TOWNS コンソールモード\n" \
  11.           "Usage : padpage [-t[1-9]] [-s[wait]] [-5] filename"
  12. #define MAIN
  13.  
  14. #include "calo.h"
  15. #include "padpage.h"
  16. #include <fcntl.h>
  17.  
  18.  
  19. void main( int argc, char *argv[] ){        /* メイン */
  20.  
  21.     int i;
  22.     char *name;
  23.  
  24.     /* オプションスイッチセット */
  25.     if( argc == 1 ) usage( argv[0] );
  26.     for( i = 1 ; i < argc ; i++ ){
  27.         if( argv[i][0] == '-' || argv[i][0] == '/')
  28.         switch ( argv[i][1] ) {
  29.         case 'T':
  30.         case 't':
  31.             tabs = atoi(argv[i]+2);
  32.             tabs = ( tabs < 1 || tabs > 9 ) ? 9 : tabs;
  33.             break;
  34.         case 'S':
  35.         case 's':
  36.             sclw = ( sclw = atoi(argv[i]+2)) > 99 ? 99 : sclw ;
  37.             break;
  38.         case '5':
  39.             lines = 5;
  40.             maxdisp = 21;
  41.             break;
  42.         case 'H':
  43.         case 'h':
  44.         case '?':
  45.             usage(argv[0]);
  46.         default:
  47.             usage("無効なスイッチです.");
  48.             break;
  49.         }
  50.         else name = argv[i];
  51.     }
  52.     /* ファイルオープン */
  53.     if( ( fp = open( name, O_RDONLY ) ) < 0 ){
  54.         usage( argv[0] );
  55.     }
  56.     /* パッド初期化 */
  57.     padinit();
  58.     /* カーソル消去 */
  59.     cur( OFF );
  60.     /* 画面モード */
  61.     if( lines == 0 )
  62.         width( 20 );
  63.     /* メイン処理 */
  64.     {
  65.         int rr = OFF;
  66.         int j = 1;
  67.         int l,ll=0;
  68.         static const char *usfn = {
  69.             "\f"ESC_GRr " ファイル: %-s " ESC_reset
  70.             };
  71.  
  72.         /* filename disp */
  73.         cprintf( usfn , name );
  74.         /* auto scroll */
  75.         sclw = 0;
  76.         if( sclw > 0 )
  77.             mline = ppgscroll('+',j);
  78.         /* オペレーション */
  79.         while( rr == OFF ){
  80.             dsppage( j,l = setline( j ) );
  81.             if( inkey() == NULL )
  82.             ll = setline( ( ll < l ) ? l : ll );
  83.             switch ( inkey() ) {
  84.             case RIGHT:
  85.                 j += maxdisp/2;
  86.                 break;
  87.             case LEFT:
  88.                 j = 1;
  89.                 break;
  90.             case UP:
  91.                 j--;
  92.                 break;
  93.             case DOWN:
  94.                 j++;
  95.                 break;
  96.             case ESCKEY: /* sellect */
  97.                 rr = ON;
  98.                 break;
  99.             case ' ':
  100.             case QUIT: /* B botan */
  101.                 j -= maxdisp/2;
  102.                 break;
  103.             case '\r':
  104.             case EXEC: /* A botan */
  105.                 rr = ppgmenu( &j ); /* menu */
  106.                 cprintf( usfn, name );
  107.                 j = dsppage( j, -1 );    /* 再表示 */
  108.             default:
  109.                 break;
  110.             }
  111.             if( j < 1 ) j = 1;
  112.             /*
  113.             */
  114.             if( mp_eof && j > ll ) j = ll ;
  115.         }
  116.     }
  117.     close( fp );
  118.     /* カーソル復活 */
  119.     cur( ON );
  120.     width( 25 );
  121. }
  122.